嗨,各位。廢廢必須說一件難過的事,由於廢廢的畢業專題快難產了,所以從今天開始會將重心轉移到趕工畢業專題。之前看廢廢筆記的各位,我必須說聲抱歉,以後不會有小筆記了。
今天會開始記錄專題進度,來講一下目前進度吧!
我們使用的是CNN來進行撲克遊戲,目前已將資料集建好,現在是要將已整理好的資料格式由一維轉為三維來進行訓練。
經過廢廢的研究了解到,依照常規的input圖片格式來看,假設今天有1000張大小為28*28,且是灰色的圖片,則input的格式是reshape(1000,28,28,1),1代表的是圖片顏色,通道數又或者稱為圖片的深度,如果今天是彩色,則RGB通道數為3,所一張圖片代表一個三維矩陣。
現在蒐集了87萬筆的牌局資料,其格式為
[strength, flop0, flop1, flop2, flop3, flop4, hand0, hand1, hands_level, player1_chips, player2_chips, 0, 1, 1, 0]
我要將此資料轉為一個三維矩陣,比如strength會變成一個二維矩陣,最後總共會有15個二維矩陣,再把這些二維矩陣疊加成一個三維矩陣,就像圖一所示:
(圖一)
目前我也成功做出來了70筆可以,現在問題是87萬有點多電腦快炸裂了,還會有exception no description警示,現在正在解決中。
#x = np.array([[0, 50, -1, -1, -1, -1, 50, 6, 4, 89.9, 37.9, 0, 1, 1, 0], [0, -1, -1, -1, -1, -1, 47, 49, 3, 37.9, 89.9, 0, 1, 1, 0]]) #一維資料測試用
x=[]
size = np.array([[0]*17]*17) #二維資料
all = []
print("reading file...")
with open('test_xy.csv', newline='') as csvfile:
# 讀取 CSV 檔內容,將每一列轉成一個 dictionary
#rows = csv.DictReader(csvfile) #csv.DictReader可以資料查找 d = {key1: value1, key2: value2}
rows = csv.reader(csvfile)
data_list = list(rows)
print("list insert to array...")
for a in range(len(data_list)):
x.append(data_list[a])
x=np.array(x)
print("start convert to 3D-array...")
for b in range(len(x)):
for c in range(15):
if c == 9 or c == 10: #資料會是小數
x[b,c]=float(x[b,c])
else:
x[b,c]=int(x[b,c])
for i in range(len(x)):
for j in range(15):
if j >= 1 and j <=7 :
if int(x[i,j]) == -1:
size[random.randrange(0,16,1),random.randrange(0,16,1)] = 0
else:
suit=int(x[i,j]) % 4
rank=int(x[i,j]) // 4
size[suit,rank] = 1
else:
if j==9 or j==10:
size[random.randrange(0,16,1),random.randrange(0,16,1)] = float(x[i,j])
else:
if int(x[i,j]) == -1:
size[random.randrange(0,16,1),random.randrange(0,16,1)] = 0
else:
size[random.randrange(0,16,1),random.randrange(0,16,1)] = int(x[i,j])
for k in range(17):
all.append(size[k,])
size = np.array([[0]*17]*17) #初始化二維資料
all = np.array(all)
all = all.reshape(len(x),15,17,17)
#print('合并矩阵:\n',all)
print('维数:',all.shape)